﻿#ifndef POSTCOMMAND_CMDSAVEHEATMAPMAINSETTINGDATA_H
#define POSTCOMMAND_CMDSAVEHEATMAPMAINSETTINGDATA_H

#include "CommandManager/CommandBase.h"
#include <QString>

namespace PostCommand
{
    /// @brief 后处理保存图像命令
    class CmdSaveHeatMapMainSettingData : public CommandManager::CommandBase
    {
        Q_OBJECT

    public:
        CmdSaveHeatMapMainSettingData();
        ~CmdSaveHeatMapMainSettingData();

        bool execute() override;
        void undo() override;
        void redo() override;

        void setHeatMapMainSettingData(int windowId, bool scalarBarIsAutoRange, double scalarBarMin, double scalarBarMax,
                                       QString scalarBarColor, int scalarBarFontSize, bool XAxisAutoTitle, QString XAxisTitle, QString XTitleFontColor, int XTitleFontSize,
                                       QString XAxisColor, double XAisThickness, int XValuePrecision, QString XAxisDigitColor, int XAxisDigitSize,
                                       bool XAxisIsAutoRange, double XAxisMax, double XAxisMin, bool XIsAutoStepSize, double XCustomStepSize,
                                       bool YAxisAutoTitle, QString YAxisTitle, QString YTitleFontColor, int YTitleFontSize,
                                       QString YAxisColor, double YAisThickness, int YValuePrecision, QString YAxisDigitColor, int YAxisDigitSize,
                                       bool YAxisIsAutoRange, double YAxisMax, double YAxisMin, bool YIsAutoStepSize, double YCustomStepSize,
                                       bool gridIsMainGridLineDisplay, QString gridMainGridLineColor, int gridMainGridLineStyle, double gridMainGridLineThickness,
                                       bool gridIsSecondaryGridLineDisplay, QString gridSecondaryGridLineColor, int gridSecondaryGridLineStyle, double gridSecondaryGridLineThickness,
                                       QString windowTitleName, QString windowTitleFontColor, int windowTitleFontSize);

    private:
        int m_windowId;
        bool m_scalarBarIsAutoRange;
        double m_scalarBarMin;
        double m_scalarBarMax;
        QString m_scalarBarColor;
        int m_scalarBarFontSize;
        bool m_XAxisAutoTitle;
        QString m_XAxisTitle;
        QString m_XTitleFontColor;
        int m_XTitleFontSize;
        QString m_XAxisColor;
        double m_XAisThickness;
        int m_XValuePrecision;
        QString m_XAxisDigitColor;
        int m_XAxisDigitSize;
        bool m_XAxisIsAutoRange;
        double m_XAxisMax;
        double m_XAxisMin;
        bool m_XIsAutoStepSize;
        double m_XCustomStepSize;
        bool m_YAxisAutoTitle;
        QString m_YAxisTitle;
        QString m_YTitleFontColor;
        int m_YTitleFontSize;
        QString m_YAxisColor;
        double m_YAisThickness;
        int m_YValuePrecision;
        QString m_YAxisDigitColor;
        int m_YAxisDigitSize;
        bool m_YAxisIsAutoRange;
        double m_YAxisMax;
        double m_YAxisMin;
        bool m_YIsAutoStepSize;
        double m_YCustomStepSize;
        bool m_gridIsMainGridLineDisplay;
        QString m_gridMainGridLineColor;
        int m_gridMainGridLineStyle;
        double m_gridMainGridLineThickness;
        bool m_gridIsSecondaryGridLineDisplay;
        QString m_gridSecondaryGridLineColor;
        int m_gridSecondaryGridLineStyle;
        double m_gridSecondaryGridLineThickness;
        QString m_windowTitleName;
        QString m_windowTitleFontColor;
        int m_windowTitleFontSize;
    };
} // namespace PostCommand

#endif
